package top.lyjwn.todo.weinxin.api.applet;

import com.alibaba.fastjson2.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import top.lyjwn.todo.weinxin.api.url.WXAppletUrl;
import top.lyjwn.todo.weinxin.applet.AppletAccessToken;
import top.lyjwn.todo.common.utils.http.HttpUtil;

/**
 * 发送客服消息
 * <p>
 * 接口应在服务器端调用，详细说明参见服务端API。
 * <p>
 * 接口说明
 * 接口英文名
 * sendCustomMessage
 * <p>
 * 功能描述
 * 该接口用于发送客服消息给用户。详细规则见 发送客服消息
 * <p>
 * 注意事项
 * 发送文本消息时，支持添加可跳转小程序的文字连接.
 * data-miniprogram-appid 项，填写小程序appid，则表示该链接跳转小程序
 * data-miniprogram-path项，填写小程序路径，路径与 app.json 中保持一致，可带参数；
 * 对于不支持 data-miniprogram-appid 项的客户端版本（6.5.16 以下），如果有 herf 项，则仍然保持跳 href 中的链接；
 * 小程序发带小程序文字链的文本消息，data-miniprogram-appid必须是该小程序的appid。
 * 调用方式
 * HTTPS 调用
 */
@Component
public class SendCustomMessage {

    @Autowired
    private WXAppletUrl wxAppletUrl;



    public SendCustomMessage() {
    }




    public String sendMiniprogrampage(AppletAccessToken appletAccessToken,String openid, String title, String pagepath, String thumb_media_id) {

        JSONObject jsonObject = new JSONObject();
        jsonObject.put("touser", openid);
        jsonObject.put("msgtype", "miniprogrampage");
        JSONObject miniprogrampage_jsonObject = new JSONObject();
        miniprogrampage_jsonObject.put("title", title);
        miniprogrampage_jsonObject.put("pagepath", pagepath);
        miniprogrampage_jsonObject.put("thumb_media_id", thumb_media_id);
        jsonObject.put("miniprogrampage", miniprogrampage_jsonObject);
        String postData = jsonObject.toJSONString();
        String res = HttpUtil.request(getUrl(appletAccessToken), HttpUtil.METHOD_POST, postData);
        return res;
    }

    public String getUrl(AppletAccessToken appletAccessToken) {
        return this.wxAppletUrl.getSEND_CUSTOM_MESSAGE().replace("#{ACCESS_TOKEN}", appletAccessToken.getAccess_token());
    }

}
